package com.party.notify.notifyPush.officialPartner;

import com.party.core.model.activity.Activity;
import com.party.core.model.copartner.BrokerageItem;
import com.party.core.model.crowdfund.Project;
import com.party.core.model.member.Member;
import com.party.core.model.order.OrderForm;
import com.party.core.model.wallet.Withdrawals;

/**
 * @Author: Administrator.
 * @Description: 合伙人APP消息推送
 * @Date:Created in 2017/10/30 0030 下午 16:46.
 */
public interface ICopartnerNotifySendService {

    /**
     * 发起众筹通知
     *
     * @param project  项目
     * @param member   会员
     * @param receiverId 接受者id
     * @param receiverMobile 接受者mobile
     */
    void sendCrowdfundApply(Project project, Member member, String receiverId, String receiverMobile, String identityType);


    /**
     * 发起众筹通知
     *
     * @param project  项目
     * @param member   会员
     * @param receiverId 接受者id
     * @param receiverMobile 接受者mobile
     */
    void gradationSendCrowdfundApply(Project project, Member member, String receiverId, String receiverMobile, String identityType);

    /**
     * 众筹成功通知
     *
     * @param orderForm       订单
     * @param crowdfundMember 众筹者
     * @param disMemberId       分销者id
     * @param disMemberMobile   分销者mobile
     * @param projectId       众筹id
     * @param identityType    身份类型
     */
    void sendCrowdfundSuccess(OrderForm orderForm, Member crowdfundMember, String disMemberId, String disMemberMobile, String identityType, String projectId);

    /**
     * 分配项目
     *
     * @param activity 项目
     * @param receiver 接受者
     */
    void sendAllotZcActivity(Activity activity, Member receiver);

    /**
     * 佣金第一次审核通过
     *
     * @param realname 众筹者名称
     * @param title    项目标题
     * @param item     佣金流水
     * @param receiver 接受者
     */
    void sendBrokerageFirstVerifyPass(String realname, String title, BrokerageItem item, Member receiver);

    /**
     * 佣金第二次审核通过
     *
     * @param realname 众筹者名称
     * @param title    项目标题
     * @param item     佣金流水
     * @param receiver 接受者
     */
    void sendBrokerageSecondVerifyPass(String realname, String title, BrokerageItem item, Member receiver);

    /**
     * 佣金第二次审核拒绝
     *
     * @param realname 众筹者名称
     * @param title    项目标题
     * @param item     佣金流水
     * @param receiver 接受者
     */
    void sendBrokerageSecondVerifyFail(String realname, String title, BrokerageItem item, Member receiver);

    /**
     * 佣金提现审核通过
     *
     * @param withdrawals 提现
     * @param receiver    接受者
     */
    void sendBrokerageWithdrawalPass(Withdrawals withdrawals, Member receiver);

    /**
     * 佣金提现审核拒绝
     *
     * @param withdrawals 提现
     * @param receiver    接受者
     */
    void sendBrokerageWithdrawalFail(Withdrawals withdrawals, Member receiver);

    /**
     * 合伙人注册成功 推送给它的上级
     *
     * @param receiver 接受者
     * @param realname 合伙人名称
     */
    void sendRegisterSuccess(String receiver, String realname);

    /**
     * 直接收入
     *
     * @param receiver      接受者
     * @param title         项目名称
     * @param brokerage     佣金
     * @param activityId    活动id
     * @param realname      众筹者名称
     * @param brokerageType 佣金类型
     */
    void sendDirectBrokerage(String receiver, String title, Double brokerage, String activityId, String realname, Integer brokerageType);

    /**
     * 间接收入
     *
     * @param receiver      接受者
     * @param title         项目名称
     * @param brokerage     佣金
     * @param realname      合伙人名称
     * @param brokerageType 佣金类型
     */
    void sendIndirectBrokerage(String receiver, String title, Double brokerage, String realname, Integer brokerageType);



    /**
     * 众筹成功通知___多场
     *
     * @param project  订单
     * @param member   会员
     * @param receiverId 接受者id
     * @param receiverMobile 接受者mobile
     */
    void gradationSendCrowdfundSuccess(Project project, Member member, String receiverId, String receiverMobile, String identityType);

}
